Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Symfonyでロケールを含むURLを色々いい感じにする
Search
Takashi Kanemoto
March 23, 2015
Programming
0
860
Symfonyでロケールを含むURLを色々いい感じにする
Symfony Meetup #2 LT 資料
https://symfony.doorkeeper.jp/events/21692
Takashi Kanemoto
March 23, 2015
Tweet
Share
More Decks by Takashi Kanemoto
See All by Takashi Kanemoto
いりゃあせ、PHPカンファレンス名古屋2025 / Welcome to PHP Conference Nagoya 2025
ttskch
1
280
PHPとAPI Platformで作る本格的なWeb APIアプリケーション(入門編) / phpcon 2024 Intro to API Platform
ttskch
0
460
今年書いた技術記事で伸びたやつの自慢と自分の中では力作なのにさっぱり伸びなかったやつの供養 / My Tech Articles 2024
ttskch
2
90
FigmaとPHPで作る1ミリたりとも表示崩れしない最強の帳票印刷ソリューション
ttskch
47
33k
データベース/SQL超入門!完全初心者向けに世界一分かりやすく解説します
ttskch
1
5k
Symfony UX Autocompleteとかいう 顧客が本当に必要だったもの
ttskch
0
1.9k
就活生あるいは新人エンジニアさんへのお節介なアドバイス
ttskch
0
1.5k
symfony/pantherでWordleを解いてみた
ttskch
0
290
ついに、Webアプリでの帳票印刷のベストプラクティスを編み出しました💡
ttskch
16
19k
Other Decks in Programming
See All in Programming
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
570
『GO』アプリ バックエンドサーバのコスト削減
mot_techtalk
0
140
昭和の職場からアジャイルの世界へ
kumagoro95
1
380
WebDriver BiDiとは何なのか
yotahada3
1
140
Introduction to kotlinx.rpc
arawn
0
700
CI改善もDatadogとともに
taumu
0
120
CDK開発におけるコーディング規約の運用
yamanashi_ren01
2
130
PHP ステートレス VS ステートフル 状態管理と並行性 / php-stateless-stateful
ytake
0
100
Rails アプリ地図考 Flush Cut
makicamel
1
120
チームリードになって変わったこと
isaka1022
0
200
バックエンドのためのアプリ内課金入門 (サブスク編)
qnighy
8
1.8k
パスキーのすべて ── 導入・UX設計・実装の紹介 / 20250213 パスキー開発者の集い
kuralab
3
790
Featured
See All Featured
Optimizing for Happiness
mojombo
376
70k
Site-Speed That Sticks
csswizardry
4
380
The Pragmatic Product Professional
lauravandoore
32
6.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Docker and Python
trallard
44
3.3k
GitHub's CSS Performance
jonrohan
1030
460k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
960
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
Practical Orchestrator
shlominoach
186
10k
BBQ
matthewcrist
87
9.5k
Transcript
SymfonyͰϩέʔϧΛؚΉ URLΛ৭ʑ͍͍ײ͡ʹ͢Δ #symfony_meetup 2015.03.22 @qckanemoto
@qckanemoto • ໊ݹ͔Βདྷ·ͨ͠ • (ג)ΧϧςοτίϛϡχέʔγϣϯζCTO • PHPྺ3 • ϦεςΟϯάࠂӡ༻πʔϧʮLisketʯ
PURPOSE
ຊޠͱӳޠͷ྆ํͰӾཡ Ͱ͖ΔαΠτʹ͍ͨ͠
symfony/translation
symfony/translation
• Ϣʔβͷϩέʔϧ͕͔Βͳ͍ͱ͖ %locale% ʹϑΥʔϧόοΫ͢Δઃఆ ͜ͷ··ͩͱৗʹຊޠදࣔ
• %locale% ͷ ja ͜ͷ··ͩͱৗʹຊޠදࣔ
Ϣʔβ͝ͱʹϩέʔϧΛ มԽͤ͞ͳ͚Εʢ໋ײʣ
HOW?
(1) Accept-Languageϔομى • HTTPϦΫΤετͷAccept-Languageϔομ͔ ΒࣗಈͰϩέʔϧΛมߋ͢Δ
ҰԠͰ͖Δ͚Ͳɺ͜Ε ͬͪΌμϝͳͭʂ (1) Accept-Languageϔομى
(1) Accept-Languageϔομى • ಉ͡URLͰϢʔβʹΑͬͯදࣔ༰͕ҟͳΔ • ʮಉ͡URL͕ৗʹಉ͡ϦιʔεΛฦ͢ʯͱ͍ ͏Webͷݪଇʹ͍ͯ͠Δ
ͱ͍͏͜ͱͰ
(2) URLʹϩέʔϧΛؚΊΔ • http://hostname/ja • http://hostname/en • http://hostname/ja/foo/bar • http://hostname/en/foo/bar
} }
(2) URLʹϩέʔϧΛؚΊΔ • _locale ϩέʔϧΛηοτ͢ΔͨΊͷಛघͳ ϧʔςΟϯάύϥϝʔλ
Ͱ͖ͨʂ͚Ͳ… • http://hostname/ja • http://hostname/en • http://hostname/ja/foo/bar • http://hostname/en/foo/bar }
}
͜Εཉ͍͠ʂ • http://hostname/ja • http://hostname/en • http://hostname/ja/foo/bar • http://hostname/en/foo/bar •
http://hostname => /ja • http://hostname/foo/bar => /ja/foo/bar } }
Ͱ͖·͢
ϩέʔϧΛ͚ͯϦμΠϨΫτ ͢ΔΞΫγϣϯΛ࡞
ϩέʔϧແ͠ͷURLશ෦ͦ͜ ʹૹΓࠐΉ
Ͱ͖ͨʂ • http://hostname/ja • http://hostname/en • http://hostname/ja/foo/bar • http://hostname/en/foo/bar •
http://hostname => /ja • http://hostname/foo/bar => /ja/foo/bar } }
༨ஊ ͱ͔Ͱ͖ͨΒ͍͍ͷʹɺͱࢥ͚ͬͨͲແཧͰͨ͠
༨ஊͷิ • yml͋͘·ͰઃఆϑΝΠϧͰ͋ͬͯɺޙํࢀ রΈ͍ͨͳॲཧͬΆ͍͜ͱ·Ͱهड़Ͱ͖ͯ͠ ·ͬͯٯʹࠔ • ϧʔςΟϯάͰޙํࢀরͱ͔͚ͨ͠ΕΠϕ ϯτϦεφʔΛ͏ͷ͕Αͦ͞͏
CONCLUSION
ຊޠͱӳޠͷ྆ํͰӾཡͰ͖ΔԽ • symfony/translation Ͱ༁ • URLͰϩέʔϧΛܾఆ • _locale ϧʔςΟϯάύϥϝʔλ •
_locale ͕লུ͞Εͨ߹ σϑΥϧτϩέʔϧͷURLʹϦμΠϨΫτ
PR
WE’RE HIRING! PHPerେืूதʂ
ΤϯδχΞͷಇ͖͢͞େࣄʹͯ͠·͢ WE’RE HIRING!
SNS͔ϝʔϧͰ͓ؾܰʹ͝࿈བྷ͍ͩ͘͞✨ WE’RE HIRING!
Thanks ;)