Binomo 다국어 지원

마지막 업데이트: 2022년 4월 19일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
HTML lang attribute

안드로이드 앱의 다국어 지원

기본적으로 안드로이드 앱에서 사용되는 문자열들은 res\values\strings.xml에 정의해서 사용합니다.

여러 언어를 지원하려면 새로운 언어를 위한 values 디렉토리를 만들고 그 안에 그 언어로 된 strings.xml을 만들면 됩니다. 새로운 언어를 위한 values 디렉토리의 형식은 values-"언어 코드 2자리(소문자)" 입니다. 예를 들어 영어라면 values-en, 일어라면 values-jp 등으로 만들면 됩니다.

아래에 가장 많이 쓸 것 같은 7개 언어를 정리해 봤습니다. (저는 영어, 한국어 이외에는 쓸 일이 없겠네요.)

만약 영어처럼 사용하는 지역이 여러 곳인 언어에 대해 특정 지역을 추가로 지정하고 싶으면

ISO 3166-1-alpha-2의 지역 코드 2자리를 values-"언어 코드 2자리(소문자)"-r"지역 코드 2자리(대문자)" 로 붙이면 됩니다. 예를 들어 미국에서 사용하는 영어라고 콕 집어 지정하고 싶으면 en-r에 US를 붙여서 values-en-rUS 로 하면 됩니다.

2. 다국어 지원을 위한 strings.xml 의 예제

한국어와 영어를 지원하는 앱의 예를 들어보도록 하겠습니다. 슬프지만, 영어를 할 줄 아는 사람이 전세계적으로 보면 더 많기 때문에 기본은 영어로 하고 한국어를 추가하도록 하겠습니다.

1) res\values\strings.xml

영어로 된 strings.xml은 다음과 같습니다.

2) res\values-ko\strings.xml

한글을 위해 values-ko 디렉토리를 만들고 그 안에 strings.xml을 새로 만듭니다. 이 때 기본(영어) strings.xml와 내용이 동일하다면 아래처럼 생략해도 무방합니다. 특히 some_key와 같이 복잡한 내용이라면 한 곳에서 관리하는 것이 좋아보입니다. 하지만, 기본적으로 안드로이드에서는 모든 항목에 대해 별도로 나눠서 관리하는 것을 더 좋아하는 것도 같습니다.

3. 다국어 사용 예제

관리는 나눠서 하지만, 사용할 때는 동일하게 하는 것이 안드로이드의 다국어 지원 방식의 장점입니다. 익숙할테니 짧게 살펴보겠습니다.

AndroidManifest.xml이나 layout 등에서는 다음 @string/app_name 처럼 사용하면 됩니다.

이 경우라면 기기 설정을 한국어로 한 경우라면 앱의 아이콘 아래 이름이 '예제'가 될 것이고, 나머지 경우라면 'Sample'이 될 것입니다.

Activity와 같은 소스에서는 다음처럼 사용합니다.

만약 위의 예제처럼 두 개의 strings.xml이 다른 경우에는 배포를 위해 apk를 만들 때 다음과 같은 에러를 볼 수 있습니다.

Error:Execution failed for task ':app:lintVitalRelease'.

> Lint found fatal errors while assembling a release target.

To proceed, either Binomo 다국어 지원 fix the issues identified by lint, or modify your build script as follows:

// Or, if you prefer, you can continue to check for errors in release builds,

// but continue the build even when errors are found:

이 경우 lint를 무시하고 싶다면 에러 메시지에서 말하는 것처럼 app 수준의 build.gradle에 아래처럼 추가하면 됩니다.

strings.xml에 정의한 것만으로는 부족할 때가 있는데 대표적인 경우가 다른 값들과 결합해서 문자열을 만들 때 입니다. 예를 들어 상품을 판매한다고 할 때 "이 상품은 1,000원입니다." 라고 한국어로 표현하는 것을 영어로 한다면 "It costs 1 USD." 처럼 문법이나 화폐 단위에 따라 문자열을 별도로 구성해줘야 할 필요가 생깁니다.

Binomo là gì? Khi cờ bạc đội lốt đầu tư tài chính 4.0

Trong suốt giai đoạn từ 2017 cho đến giữa năm 2019, Binomo có lẽ là sàn giao dịch chi mạnh tay cho quảng cáo nhất, khi xuất hiện liên tục và dày đặc ở muôn nơi. Tuy nhiên, đỉnh điểm khiến Binomo trở thành cái tên “sáng nhất vịnh Bắc Bộ” chính là nhờ vào quảng cáo theo dạng chia sẻ gây sốc của 1 thanh niên, đã kiếm được 1.000 USD/ngày chỉ nhờ vào giao dịch Binomo. Sau khi lan truyền với tốc độ chóng mặt, rất nhiều cơ quan chức năng đã vào cuộc, lên tiếng cảnh báo về hình thức giao dịch quyền chọn nói chung và Binomo nói riêng. Binomo là gì, Binomo có thực sự lừa đảo hay không mà bị nhiều nơi “sờ gáy” đến như vậy?

Binomo là gì?

Binomo là sàn giao dịch quyền chọn nhị phân (Binary Option), trong đó cho dù có nhiều cách chơi khác nhau, nhưng về cơ bản người chơi vẫn sẽ chỉ đoán giá cả của thị trường trong khoảng thời gian nhất định như 30 giây, 60 giây, 15 phút… Sau khi hết thời gian cho phép, nếu giá chạy theo đúng hướng người chơi đã đoán trước đó, họ sẽ nhận được số tiền tương đương với 80 hoặc 90% giá trị mà họ đặt, hoặc mất tất cả nếu đoán sai.

Khi cờ bạc trá Binomo 다국어 지원 hình đội lốt đầu tư tài chính 4.0

Với giải thích bên trên, có thể thấy cách thức giao dịch của Binomo sẽ tương đồng với trò tài xỉu Việt Nam. Hay chính xác hơn là 1 biến tướng của “đánh bạc”. Chỉ khác ở chỗ thay vì chơi thật mặt đối mặt với những người khác, với người cầm cái, thì bạn sẽ chơi qua màn hình, cùng người cầm chịch ở đây chính là Binomo.

Cũng vì cách thức chơi cực kỳ quá đơn giản, chỉ cần đoán giá lên hay xuống sau 30 giây, 1 phút… nếu đúng người chơi sẽ “lượm tiền”, nên bất kỳ ai từ 18 tuổi trở lên đều có thể dễ dàng tham gia. Vì lẽ đó, quyền chọn nhị phân nói chung hay Binomo nói đã thu hút 1 lượng lớn khách hàng ở nhiều độ tuổi khác nhau mở tài khoản và giao dịch.

Tuy nhiên, nếu chỉ dừng lại như vậy, Binomo khó lòng tạo ra sự hấp dẫn hay kích thích người chơi, giúp Binomo trở thành sàn giao dịch quyền chọn “hot” nhất tại Việt Nam hiện nay.

Mà bởi Binomo đã lên hàng loạt chiến dịch marketing cũng nhiều chương trình khác nhau để thu hút nhà giao dịch. Không những vậy, còn “xập xí xập ngầu” giữa việc đoán giá trị tài sản trong Binomo với cách chơi Forex. Tức là đưa hình thức này lên 1 tầm cao mới đầu tư tài chính thời đại 4.0, nhưng thực chất nếu để gọi đúng thì đây là: “đánh bạc thời đại 4.0”.

Về cơ bản, không thể lấy giao dịch quyền chọn nhị phân nói chung, Binomo nói riêng, để so sánh với giao dịch forex. Bởi vì khi chơi forex, Binomo 다국어 지원 giá cả được quyết định bởi thị trường. Các sàn forex, ngoại trừ sàn dạng nhà cái Market Maker ra, thì broker chỉ là nơi trung gian, nên sau khi nhận lệnh từ trader, họ sẽ đẩy lệnh vào thị trường, cũng như không can thiệp giá cả hay tìm cách làm giá để “giết” trader.

Ngoài ra, hầu hết trader khi giao dịch forex đều biết ít nhiều phân tích kỹ thuật, hoặc đọc tin tức để đoán xu hướng giá. Và đôi khi, trader phải chờ đợi, hoặc mất 1 khoảng thời gian nhất định mới biết được kết quả lệnh giao dịch đúng hay sai.

Nhưng với Binomo, ngược lại, chỉ trong 1 thời gian ngay sau khi đặt lệnh, 30 giây hoặc 60 giây là biết kết quả. Với 1 khoảng thời gian ngắn như vậy, việc biết được giá lên hay xuống sẽ mang nhiều tính hên xui, may rủi. Không kể, nếu sàn cố tình tác động vào kết quả dự báo, thì thế cờ sẽ bị lật ngược dễ dàng, trader luôn trở thành người thua cuộc.

Binomo Tung ra vô số loại sản phẩm giao dịch, nhiều cách thức chơi khác nhau nhưng tựu chung lại vẫn là: Put hay Down (giá lên hay xuống).

Để hợp lý hoá cho rằng đây là hình thức đầu tư tương tự với cách giao dịch CFD tại nhiều sàn forex khác. Binomo cung cấp rất nhiều cặp sản phẩm khác nhau từ forex, tiền điện tử cho đến cổ phiếu. Nhưng tựu chung lại vẫn chỉ là “bình mới rượu cũ”, luật chơi của 10 cặp tiền, 20 cặp tiền hay 50 cặp tiền vẫn chỉ là đoán giá sản phẩm. Chỉ là để người chơi bớt cảm thấy chán nản, có thể thay đổi các cặp tiền, và tất nhiên người cầm Cái ở đây vẫn chỉ là Binomo mà thôi!

Không dừng lại ở đó, để tăng máu ăn thua cho các con bạc, vào năm 2019, Binomo còn chạy chiến dịch quảng cáo giới thiệu về 1 bạn trẻ Binomo 다국어 지원 đã kiếm được 1000 USD/ngày, khiến cho nhiều người bán tín bán nghi, lao vào chơi thử, xem liệu tiền có dễ dàng kiếm được như những gì Binomo quảng cáo hay không?

Binomo đã rất khéo léo, sau khi gây sốc bằng 1 quảng cáo có mức độ lan Binomo 다국어 지원 tỏa cực cao, thông qua mạng internet, đã gợi ý cho những trader chơi thử tài khoản demo. Với lý lẽ để họ thử, biết cách chơi. Đúng! Điều này không có gì sai. Không chỉ Binomo mà ngay cả sàn forex cũng đều có tài khoản demo cho trader tập chơi thử.

Tuy nhiên, cái đáng nói ở đây, nếu chơi demo ở Binomo, người chơi có thể dự đoán giá chính xác bao nhiêu, thì khi nạp tiền, chơi trên tài khoản thật, tỷ lệ thua lỗ lại cao bấy nhiêu. Không hề dễ “ăn” chút nào!Binomo 다국어 지원

Và để kích thích máu thua lỗ, muốn gỡ gạc lại số tiền đã mất, Binomo còn đưa ra rất nhiều chính sách “nhân đạo”, sao cho giữ chân người chơi càng lâu càng tốt như chính sách hoàn tiền hay bảo hiểm tiền nạp.

Mặc dù trên trang chủ có quảng cáo rằng sẽ trả lại 10% chi phi vào thứ 2. Nhưng thực tế số tiền này chỉ trả khi giao dịch thua lỗ, dựa theo số tiền còn trong tài khoản. Đặc biệt, chỉ tài khoản VIP nạp từ 1.000 USD trở lên mới được hưởng 10%, những loại tài khoản thường, hay tài khoản standard không được hưởng cơ chế này.

Nghe thì có vẻ như Binomo rất quan tâm tới trader. Nhưng thực tế rồi “mỡ nó cũng rán nó” mà thôi!

Nghĩa là vì đang cay cú do bị thua, tâm lý của trader sẽ giống như 1 con bạc khát nước, không chỉ nướng hết số tiền được hoàn lại này, mà còn có thể tìm cách nạp, nạp nữa, nạp mãi. Không kể, vì tiền hoàn lại tối đa chỉ 10%, cũng không đáng là bao so với số tiền trader nạp vào đây để giao dịch. Nhưng thói thường của con người rất hay bị vỗ về bởi các món lợi nhỏ mà quên đi khoản tiền lớn bị mất. Nên ngay khi được Binomo hoàn trả như vậy, trader sẽ tiếp tục bám trụ và nếu thua hết số tiền này, sẽ tiếp tục nạp thêm vào để chơi. Vòng xoáy cứ như vậy cho tới khi nào hết sạch tiền mới chịu dừng.

Thậm chí, không chỉ khuyến khích trader nạp tiền càng nhiều càng tốt, ngay tại phần chia sẻ kiến thức của Binomo, sàn này cũng nhấn mạnh: “Tài khoản của bạn càng có nhiều tiền, thì bạn càng dễ dàng giao dịch. Nếu bạn mất $10 khi bạn có $1.000 trong tài khoản, bạn sẽ không phải quá buồn rầu và sẽ tiếp tục giao dịch như đã dự định. Nhưng nếu chỉ có $50 trong tài khoản, thì điều này có thể khiến bạn bực bội và từ đó dẫn tới sai lầm, và mất hết toàn bộ số tiền trong tài khoản. Đấy là còn chưa kể thực tế rằng trong trường hợp đầu tiên, bạn có 100 lần thử khắc phục tình hình, và trong trường hợp thứ hai – bạn chỉ có 4 lần thử. Một phép toán đơn giản.”

Nghe thì có vẻ rất hợp lý, nhưng suy cho cùng, trader nạp tiền càng nhiều càng béo Binomo! Bởi sớm muộn gì tiền cũng về tay sàn hết thôi!

Sở dĩ nói rằng người chơi không bao giờ có thể thắng, bởi người cầm chịch trò đoán giá này là Binomo.

Binomo tạo ra 1 website để người chơi tham gia. Nếu nhà giao dịch thắng, Binomo sẽ phải trả số tiền đó cho họ. Ngược lại, nếu họ thua Binomo sẽ là hưởng toàn bộ số tiền đó.

Vậy, nếu như Binomo thực sự là 1 hội bảo trợ nhân đạo, giúp đỡ cho người nghèo, để họ “vặt” được tiền của Binomo, thì Binomo lấy cái gì chi trả cho hàng loạt các chiến dịch quảng cáo rầm rộ trên toàn bộ hệ thống các kênh mạng xã hội? Đỉnh điểm là vào năm 2018 và 2019, hàng loạt KOL gồm các Youtuber nổi tiếng, cầu thủ bóng đá, và nhiều gương mặt khác đã trở thành gương mặt đại diện cho sàn này.

Một điều chắc chắn số tiền chi trả sẽ không hề nhỏ chút nào. Có ai lại lấy tiền từ túi mình để chi cho các hoạt động pr, hoặc dùng để duy trì bộ máy nhân sự, sau đó vét nốt các đồng tiền còn lại để trả thưởng cho trader không? Vậy những người sáng lập ra Binomo sẽ sống bằng gì? Hay họ dùng chính tiền của trader để thực hiện những việc vừa kể trên?

Đã có rất nhiều quốc gia lên tiếng cảnh báo hoặc xếp Binomo vào danh sách đen

Hiện tại, Google đã chính thức cấm cửa toàn bộ các quảng cáo liên quan tới giao dịch quyền chọn hay Binomo.

Không dừng lại ở đó rất nhiều tổ chức tài chính uy tín như FCA cũng đã cấm toàn bộ hoạt động của quyền chọn kể từ tháng 4/2019. Và cơ quan này cũng lên tiếng cảnh báo rằng nếu bất kỳ công ty hay tổ chức nào giới thiệu dịch vụ này, rất có thể đó là hành động LỪA ĐẢO.

Một số quốc gia trực thuộc châu Âu như Pháp hay Bỉ cũng cho rằng giao dịch nhị phân là hành động trái luật. Thậm chí ngay cả Việt Nam báo chí và những cơ quan có thẩm quyền đều lên tiếng cảnh báo người dân thận trọng với hình thức giao dịch này.

Người chơi Việt Nam: cái tên vàng trong làng chơi bạc, giúp vỗ béo Binomo 다국어 지원 Binomo mỗi ngày!

Vì tò mò, nên tôi đã sử dụng Similarweb để xem xét lượng người truy cập vào Binomo đến từ quốc gia nào.

Trong đó, ngoài Mexico đang chiếm 24%, thì Việt Nam cũng góp phần giúp Binomo “ăn nên làm ra” mỗi ngày khi có tới gần 9% lượng truy cập. Nên không khó hiểu vì sao, Binomo lại đẩy mạnh cũng như không hề tiếc tiền làm truyền thông trong suốt thời gian hoạt động.

Và 2 năm có lẽ là quá đủ để Binomo được nhiều người nhớ mặt, nhớ tên. Giúp cho Binomo dù bị chặn quảng cáo, nhưng lượng người truy cập trực tiếp vào website này không thông qua tìm kiếm trên Google có tỷ lệ vô cùng cao, gần 50%, vẫn theo số liệu tại Similarweb.

Bị dập cho tơi tả, tại sao Binomo vẫn phát triển mạnh mẽ?

Bị dập bằng chân chính thì Binomo sẽ đi cửa phụ! Đó chính là mua quảng cáo tại các trang báo, nhưng không phải theo dạng đặt banner mà theo dạng chia sẻ, bằng những cái title cực gây sốc như “Một sinh viên kiếm được 30 triệu/tháng”, hay “Cô gái trẻ 22 tuổi vừa ra trường đã tự mua nhà cho bản thân”…

Hoặc là thông qua hình thức truyền miệng (Word of mouth) do chính những leader, những người đang tìm kiếm các con bạc, đánh dưới link đăng ký của họ để hưởng hoa hồng. Bằng việc chia sẻ ngày kiếm được bao tiền, đi chơi, nghỉ dưỡng ở những nơi sang chảnh ra sao mà tiền vẫn đầy túi, để thu hút những người nhẹ dạ cả tin tham gia.

Không những vậy, trước khi bị “cấm tiệt”, với hơn 2 năm vùng vẫy chi mạnh cho truyền thông, Binomo thực sự đã có 1 lượng khách hàng rất lớn, những người ngày đêm vẫn mộng tưởng có thể làm giàu bằng con đường 30 giây, chỉ với 1 cú click chuột lựa chọn giá lên hay giá xuống!

Nhà cái luôn thắng, Binomo luôn Binomo 다국어 지원 nằm cửa trên, chỉ có trader thiệt!

Không chỉ tìm cách “đục” tiền của trader, mà ngay việc rút tiền tại Binomo đều khá mất thời gian và site luôn thay đổi thủ tục, có thể từ chối việc rút tiền của khách hàng, hoặc tìm mọi cách để “hành” khách, như đã từng xác minh tài khoản nhưng khi người chơi rút 1 số tiền lớn, sàn sẽ hỏi lại dịch vụ này, hoặc tuyên bố người chơi gian lận không cho rút.

Không những vậy, nếu bạn chịu khó đọc các điều khoản được đề ra bởi Binomo 다국어 지원 chính Binomo. Có thể thấy, gần như khách hàng sẽ chịu toàn bộ thiệt hại khi có những sự cố xảy ra, như lỗi đường truyền không ổn định, lỗi kỹ thuật, bạn sẽ không được đền bù, vì đó là việc của Bạn!

Đặc biệt, Binomo hoàn toàn có Binomo 다국어 지원 quyền tự động chấm dứt thỏa thuận mà không cần phải nêu ra bất cứ lý do nào.

Vậy, không phải Binomo sẽ là người làm chủ cuộc chơi thì ai vào đây nữa?

Bởi khi đã đăng ký tài khoản nghĩa là bạn đã tự động ký cam kết đồng ý với những thoả thuận theo quy định từ chính Binomo. Cho nên, nếu có kiện tụng hay phát sinh bất cứ điều gì, bạn không bao giờ có thể thắng được, hay kể cả hãn hữu lắm thì được “vạ thì má cũng sưng”. Vì lẽ đó, hãy cân nhắc kỹ lưỡng trước khi tham gia giao dịch tại Binomo, bạn nhé. Chúc các bạn luôn tỉnh táo và thành công!

Bạn vừa đọc bài viết: Binomo là gì? Khi cờ bạc đội lốt đầu tư tài chính 4.0

Đừng quên ThíchChia sẻ bài viết này bạn nhé!

Flutter 앱 개발 8 : 다국어 지원 I

다국어 지원을 쉽게 도와주는 easy localization 패키지를 사용할 계획이니 pubspec.yaml 에 의존성을 추가하자.

2. 다국어 리소스 추가

assets 아래에 translations 폴더를 생성하고 언어별 리소스를 추가한다.

영어 (en.json), 스페인어 (es.json), 일본어 (ja.json), 한국어 (ko.json), 중국어 (Binomo 다국어 지원 zh.json) 를 추가했다.

다국어 리소스 파일 추가

앱에 사용된 문자열은 제목인 '오늘 우주는' 과 '앱 평가하기' 이므로 각각 'title', 'rate' 라는 이름으로 언어별 리소스를 작성하자.

<
"title": " El Universo Hoy " ,
"rate": " Califica esta aplicación "
>

그리고 pubspec.yaml 의 flutter > assets 속성으로 리소스 폴더를 등록한다.

3. 다국어 지원 초기화

3.1. 기존 MaterialApp 을 Stateless 위젯으로 변경

기존에 runApp 에 넘기던 MaterialApp을 Stateless 위젯으로 일단 변경하고, 로케일 관련 설정을 build context로 부터 받아와서 설정한다. Stateless 위젯에 대한 설명은 아래 포스트를 참고하기 바란다.

Flutter 커스텀 위젯 (Stateless, Stateful)

기본적으로 플러터 UI 는 ListView, Column, Text 등 기본 위젯을 이용해서 Binomo 다국어 지원 구성한다. 하지만, 어플리케이션의 구현이 복잡해 질수록 재사용 가능한 커스텀 위젯의 개발이 불가피하다. 이번 포스트에서

lib/main.dart 를 아래와 같이 변경한다.

3.1. EasyLocalization 초기화

lib/main.dart 파일의 runApp 함수에 MyApp 을 바로 넘기는 대신, EasyLocalization 위젯으로 한번 감싸고 넘기면 다국어 지원 초기화가 된다. EasyLocalizatoin 사용시 활용한 옵션은 아래와 같다.

  • supportedLocales : 지원 로케일
  • path : 다국어 리소스 위치
  • fallbackLocale : 기본 로케일
  • child : 루트 위젯. 기존의 MaterialApp 을 넘기면 된다.

4. 다국어 적용

적용 방법은 간단하다. 적용 대상 리소스의 키에 tr() 이라는 함수를 호출하면 된다. 참고로 tr() 을 호출 하기 위해서는 아래 헤더를 추가해줘야 한다.

(주)카이런소프트

미국 소재의 회사와 프로젝트를 진행하면서 다국어 지원이 필수가 되었습니다. 웹 사이트에 다국어 지원을 위한 방법에는 여러 가지가 있겠지만, 어떤 게 가장 효율적인 방법일지 고민이 되었습니다.

다국어 지원을 위한 방법 은 두 가지 정도로 볼 수 있었는데요.

1. lang을 사용해서 언어 선택 시 부분의 언어코드를 바꿔준다.

2. 언어별로 다른 스타일 CSS를 적용해준다.

다국어 지원을 하는 웹사이트를 서칭 해본 결과, 두 번째의 경우가 더 많았습니다. 하지만 보통의 경우 두 가지 언어(한국어/영어)를 지원했는데, 저희는 4가지의 언어를 지원해야 하다 보니 저희에게는 공수가 너무 많이 드는 방법이었어요.

물론 두 번째 방법이 웹사이트를 더 예쁘게 만들어 줄 수 있었겠지만. 프로젝트는 늘 시간과의 싸움이기 때문에, html의 lang 어트리뷰트, css의 lang 프로퍼티를 사용하는 첫 번째 방법을 선택하게 되었습니다(아, 선택하면서 개발자분들과 이야기도 많이 했어요! 이렇게 하려고 하는데 개발단에서도 복잡한 건 아닌지 등등. 어려운 부분은 아니라고 하셔서 선택하는데 도움이 많이 되었답니다).

이 두 가지는 다국어 지원을 위해 함께 사용하는데 어떻게 사용하는지와 사용하면서 불편했던 부분, 그리고 그 불편함을 해결하는 방법까지 한 번에 알아볼게요 :-)

HTML lang attribute

퍼블리싱을 하다 보면 위와 같은 문법을 가장 먼저 마주하게 되죠?

생략하는 경우도 있을 테고, 보통은 로 많이 사용할 텐데요.

HTML lang 어트리뷰트를 왜 사용할까요?

1. 웹 접근성(web accessibility) 준수

4. CSS 특정 스타일 적용

사실 가장 중요한 이유는 웹 접근성 준수와 콘텐츠가 어떤 언어를 사용하는지 알려주기 위함입니다. 검색엔진이 크롤링할 경우 어떤 언어인지 확실하게 파악해야 하기 위해서 lang이 반드시 필요한 것이죠.

주 언어가 한국어라면 , 영어라면 이런 식으로 html 태그에 함께 사용해주시면 됩니다.

"CSS 특정 스타일 적용" 이 부분은 사용하면서 불편했던 부분을 해결하는 방법과 연관되어 있어서, 마지막에 설명하도록 할게요 :-)

CSS lang property

혹시라도 다국어 지원이 Binomo 다국어 지원 필요한 웹사이트라면 언어별로 폰트를 다르게 지정하는 경우도 있겠죠? 언어마다 어울리는 언어도 다르고 지원하는 폰트도 다르다 보니 시안 작업과 퍼블리싱 화면이 다르게 보이는 때가 종종 있었습니다.

저희가 진행했던 프로젝트에서는 한국어, 영어, 중국어, 스페인어를 지원해야 해서 선택하는 언어에 따라 적용되는 폰트들을 찾아보고, 가장 예쁘게(?) 적용될 수 있는 폰트들을 연결해주었습니다.

CSS lang 프로퍼티를 사용하면 html의 lang이 어떤 언어코드냐에 따라 각각 다른폰트를 적용할 수 있어서 편리하더라구요!

한 언어에 두가지 이상의 폰트를 사용하는 경우에는 어떨까요?

언어에 따른 폰트를 지정해주지 않은 상태라면 css 상에서 font-family를 지정해주면 되지만, lang을 사욯애서 폰트를 지정해준 경우에는 lang으로 지정한 폰트 이외에 적용이 안되는 경우가 많습니다.

사실 이것 때문에 포스팅을 기획했는데 . 몇달 뒤에 다시 적용해보니 lang과는 별개로 font-family가 잘 먹히는 겁니다? 그래서 포스팅을 할까말까 고민하다가 . 그래도 안되는 경우의 수가 많다고 판단해 포스팅을 하게 되었답니다 :-)

한 언어에 두가지 이상의 폰트를 사용할 때 가장 안전한 방법은 다른 폰트가 필요한 곳의 CSS 선택자 앞에 :lang()을 추가해 주는 건데요. 아래의 예시를 보시면 좀 더 이해하기 좋을거에요.

다른 폰트가 필요한 곳의 css 선택자 앞에 :lang()을 추가!

저희는 .nanumsquare 로 폰트명을 클래스명으로 지정해서 필요한 곳에 적절히 넣어주었는데요. 주로 숫자가 들어가는 대시보드 영역에 많이 사용하였습니다. 나눔스퀘어 폰트가 웹폰트로는 적절하지 않을 때가 많은데 숫자는 기가막히게 예쁘거든요(나눔글꼴 만세!).

이렇게 지정하지 않은 상태에서는 보.통.의 경우 다른 font-family가 먹히지 않는게 맞는데, 왜 몇 달이 지났 뒤에 오류마냥 정상 작동해버리는지 모르겠어요. 테스트 하는데 다른 폰트도 잘 적용되고, Fontawsome도 잘 나와서 당황했지 뭡니까. 이거 때문에 아이콘들 따로 제작하고, 폰트 포기하고, 난리도 아니었는데 말이죠. 그때는 안되고, 지금은 되는 이유를 알고싶다.

[database-design] 다국어 데이터베이스의 스키마

다국어 소프트웨어를 개발 중입니다. 응용 프로그램 코드가 진행되는 한 지역화 가능성은 문제가되지 않습니다. 언어 별 리소스를 사용할 수 있고 모든 종류의 도구를 사용할 수 있습니다.

그러나 다국어 데이터베이스 스키마를 정의 할 때 가장 좋은 방법은 무엇입니까? 테이블이 많고 (100 이상) 각 테이블에 현지화 할 수있는 여러 열이있을 수 있습니다 (대부분의 nvarchar 열은 지역화 가능해야 함). 예를 들어, 테이블 중 하나에 제품 정보가있을 수 있습니다.

NAME 및 DESCRIPTION 열에서 다국어 텍스트를 지원하는 세 가지 방법을 생각할 수 있습니다.

시스템에 새 언어를 추가 할 때 다음과 같이 번역 된 텍스트를 저장할 열을 추가로 만들어야합니다.

각 언어에 대한 열이있는 번역 테이블

번역 된 텍스트를 저장하는 대신 번역 테이블의 외래 키만 저장됩니다. 번역 테이블에는 각 언어에 대한 열이 있습니다.

각 언어에 대한 행이있는 번역 테이블

번역 된 텍스트를 저장하는 대신 번역 테이블의 외래 키만 저장됩니다. 번역 테이블에는 키만 포함되며 별도의 테이블에는 언어로의 각 번역에 대한 행이 포함됩니다.

각 솔루션에는 장단점이 있으며 이러한 접근 방식에 대한 경험이 무엇인지, 권장 사항 및 다국어 데이터베이스 스키마 설계 방법에 대해 알고 싶습니다.

답변

번역 할 수있는 각 테이블에 대해 관련 변환 테이블이 있다고 생각하십니까?

CREATE TABLE T_PRODUCT (pr_id int, PRICE NUMBER (18, 2))

CREATE TABLE T_PRODUCT_tr (pr_id INT FK, 언어 코드 varchar, pr_name 텍스트, pr_descr 텍스트)

이렇게하면 번역 가능한 열이 여러 개인 경우 translationid를 자동 생성하지 않으므로 관련 번역과 함께 항목을 가져 오는 것이 더 쉬울 수 있으므로 하나의 조인 만 있으면됩니다.

이에 대한 부정적인 측면은 복잡한 언어 대체 메커니즘이있는 경우이를 위해 일부 저장 프로 시저에 의존하는 경우 각 변환 테이블에 대해이를 구현해야 할 수도 있다는 것입니다. 앱에서 그렇게하면 아마도 문제가되지 않을 것입니다.

당신의 생각을 알려주십시오-나는 또한 다음 신청을 위해 이것에 대해 결정하려고합니다. 지금까지 우리는 세 번째 유형을 사용했습니다.

답변

이것은 흥미로운 문제이므로, 괴롭히자.

방법 1의 문제부터 시작하겠습니다.
문제 : 속도를 절약하기 위해 비정규 화하고 있습니다.
SQL (hstore가있는 PostGreSQL 제외)에서는 매개 변수 언어를 전달할 수 없으며 다음과 같이 말합니다.

따라서이 작업을 수행해야합니다.

새 언어를 추가하면 모든 쿼리를 변경해야합니다. 자연스럽게 “동적 SQL”을 사용하므로 모든 쿼리를 변경할 필요가 없습니다.

이것은 일반적으로 이와 같은 결과를 낳습니다 (그리고 뷰 또는 테이블 반환 함수에서는 사용할 수 없습니다. 실제로보고 날짜를 필터링 해야하는 경우 실제로 문제가됩니다)

이것에 대한 문제는
a) 날짜 형식은 언어마다 매우 다르므로 ISO 형식으로 입력하지 않으면 문제가 발생합니다 (일반 정원 다양성 프로그래머가 일반적으로하지 않는 경우). 명시 적으로 지시 한 경우에도 사용자가 대체하지 않을 것임을 사용자에게 확실하게보고합니다.
그리고
b) 가장 중요한 것은 모든 종류의 구문 검사푼다는 것입니다 . 경우 변경합니다 갑자기 날개 변화에 대한 요구 사항 및 AA 새 테이블이 만들어지기 때문에 스키마가 이전 하나가 남아 있지만, 참조 필드는 이름, 당신은 경고의 어떤 종류를하지 않습니다. 날개 매개 변수 (==> guid.empty) 를 선택하지 않고 보고서 를 실행할 때도 보고서가 작동합니다 . 그러나 갑자기 실제 사용자가 실제로 날개를 선택하면 ==> . 이 방법은 모든 종류의 테스트를 완전히 중단합니다.

방법 2 :
간단히 말해서 : “훌륭한”아이디어 (경고-풍자), 방법 3의 단점 (많은 항목이있을 때 느린 속도)을 방법 1
의 다소 끔찍한 단점과 결합 해 봅시다. 이 방법
의 유일한 장점은 하나의 테이블로 모든 번역을 수행하므로 유지 관리가 간단합니다. 그러나 방법 1과 동적 SQL 저장 프로 시저, 그리고 번역을 포함하는 (일시적인) 테이블 및 대상 테이블의 이름을 사용하여 동일한 작업을 수행 Binomo 다국어 지원 할 수 있습니다 (모든 텍스트 필드의 이름을 가정하면 매우 간단합니다). 같은).

방법 3 :
모든 번역에 대한 하나의 테이블 : 단점 : 번역하려는 n 개의 필드에 대해 제품 테이블에 n 개의 외래 키를 저장해야합니다. 따라서 n 개의 필드에 대해 n 개의 조인을 수행해야합니다. 변환 표가 전역 테이블이면 많은 항목이 있으며 결합이 느려집니다. 또한 항상 n 개의 필드에 대해 T_TRANSLATION 테이블을 n 번 조인해야합니다. 이것은 상당히 오버 헤드입니다. 이제 고객 당 사용자 정의 번역을 수용해야 할 경우 어떻게해야합니까? 추가 테이블에 다른 2x n 조인을 추가해야합니다. 2x2xn = 4n 추가 조인으로 10 개의 테이블을 조인 해야하는 경우 얼마나 엉망입니까! 또한이 디자인을 사용하면 2 개의 Binomo 다국어 지원 테이블에서 동일한 변환을 사용할 수 있습니다. 한 테이블에서 항목 이름을 변경하면 매번 다른 테이블에서도 항목을 변경하고 싶습니까?

또한 이제 제품 테이블에 외래 키가 있으므로 더 이상 테이블을 삭제하고 다시 삽입 할 수 없습니다 … 물론 FK 설정을 생략 한 다음 테이블을 삭제하고 다시 삽입 할 수 있습니다 newid () 또는 삽입에서 ID를 지정하지만 identity-insert가 OFF 인 모든 항목은 데이터 가비지 (및 널 참조 예외)로 곧 이어질 것입니다.

방법 4 (나열되지 않음) : 모든 언어를 데이터베이스의 XML 필드에 저장 예 :

그런 다음 SQL에서 XPath-Query로 값을 얻을 수 있습니다. 여기서 string-variable을

다음과 같이 값을 업데이트 할 수 있습니다.

어디 대체 할 수 /lang/de/. 와 함께 '. /' + @in_language + '/. '

PG hstore의 연관 배열에서 항목을 읽는 대신 XML 구문 분석의 오버 헤드로 인해 XML이 너무 느려져 XML 인코딩이 너무 어려워서 PostGre hstore와 같은 종류가 유용합니다.

방법 5 (SunWuKung에서 권장하는 방법 중 하나) : 각 “제품”테이블 당 하나의 변환 표. 이는 언어 당 하나의 행과 여러 개의 “텍스트”필드를 의미하므로 N 필드에는 하나의 (왼쪽) 조인 만 필요합니다. 그런 다음 “제품”테이블에 기본 필드를 쉽게 추가하고 변환 테이블을 쉽게 삭제하고 다시 삽입 할 수 있으며 사용자 정의 번역 (요청시)을위한 두 번째 테이블을 만들 수도 있습니다. 다시 삽입)하고 여전히 모든 외래 키가 있습니다.

이 작품을 볼 수있는 예를 만들어 봅시다.

그런 다음 데이터를 입력하십시오

그런 다음 데이터를 쿼리하십시오.

게으른 경우 언어 테이블의 기본 키로 ISO-TwoLetterName ( ‘DE’, ‘EN’등)을 사용할 수 있으므로 언어 ​​ID를 조회 할 필요가 없습니다. 그러나 그렇게하는 경우 IETF 언어 태그를 대신 사용하고 싶을 것 입니다. 실제로 동일한 직교 법이 아닌 de-CH 및 de-DE를 얻으므로 더 좋습니다. 동일한 기본 언어이지만. 특히 en-US 및 en-GB / en-CA / en-AU 또는 fr-FR / fr-CA에 비슷한 문제가 있다는 점을 고려할 때 매우 중요합니다.
견적 : 우리는 그것을 필요로하지 않으며 소프트웨어는 영어로만합니다.
답 : 예-그러나 어느 것 ??

어쨌든 정수 ID를 사용하면 유연하고 나중에 메소드를 변경할 수 있습니다.
그리고 그 정수를 사용해야합니다. 왜냐하면 botched Db 디자인보다 더 성 가시고 파괴적이며 번거로운 것이 없기 때문입니다.

그리고, 당신은 여전히 “우리가”말을하는 경우 에만 “오직 우리의 응용 프로그램을 하나 개 (보통 EN-US와 같은) 문화”- 그러므로 나는 여분의 정수, 이것이 좋은 시간과 언급하는 장소가 될 것이라고 필요가 없습니다 IANA 언어 태그 , 그렇지 않습니까?
그들은 다음과 같이 가기 때문에 :

(1996 년에 철자법 개혁이 있었다 …) 철자가 틀린 단어를 사전에서 찾아보십시오. 이것은 법률 및 공공 서비스 포털을 다루는 응용 프로그램에서 매우 중요합니다.
더 중요한 것은 키릴 자모에서 라틴 알파벳으로 바뀌는 지역이 있으며, 일부 애매한 직교 법 개혁의 피상적 인 성가신 것보다 문제가 될 수 있기 때문에 거주 국가에 따라 중요한 고려 사항이 될 수 있습니다. 한 가지 방법 또는 다른 방법으로, 경우에 따라 정수를 갖는 것이 좋습니다.

편집 :
그리고 ON DELETE CASCADE 후에 추가하여

간단히 말하면 DELETE FROM T_Products 외래 키 위반이 발생하지 않습니다.

데이터 정렬과 관련하여 다음과 같이합니다.

A) 고유 한 DAL 보유
B) 언어 테이블에 원하는 데이터 정렬 이름을 저장하십시오.

데이터 정렬을 자체 테이블에 넣을 수 있습니다. 예 :

C) 데이터 정렬 이름을 auth.user.language 정보에 제공하십시오

D) 다음과 같이 SQL을 작성하십시오.

E) 그런 다음 DAL에서이 작업을 수행 할 수 있습니다.

그러면 완벽하게 구성된 SQL 쿼리가 제공됩니다.

답변

세 번째 옵션은 몇 가지 이유로 가장 좋습니다.

  • 새로운 언어에 대한 데이터베이스 스키마를 변경할 필요가 없으므로 코드 변경이 제한됩니다.
  • 구현되지 않은 언어 또는 특정 항목의 번역을 위해 많은 공간이 필요하지 않습니다.
  • 최고의 유연성 제공
  • 스파 스 테이블로 끝나지 않습니다.
  • null 키에 대해 걱정할 필요가 없으며 일부 null 항목 대신 기존 번역이 표시되는지 확인할 필요가 없습니다.
  • 다른 번역 가능한 항목 / 사물 등을 포함하도록 데이터베이스를 변경하거나 확장하는 경우 동일한 테이블과 시스템을 사용할 수 있습니다. 이는 나머지 데이터와 매우 관련이 없습니다.

답변

나는 설명 할 필요가 없다고 생각합니다. 구조 자체를 설명합니다.

답변

나는 일반적 으로이 접근법 (실제 SQL이 아님)을 원할 것입니다. 이것은 마지막 옵션과 일치합니다.

번역 가능한 모든 텍스트를 한 곳에 배치하면 유지 관리가 훨씬 쉬워집니다. 간혹 번역이 번역 국에 아웃소싱되는 경우가 많으므로이 방법을 사용하면 하나의 큰 내보내기 파일 만 보내서 쉽게 다시 가져올 수 있습니다.

답변

기술적 인 세부 사항 및 솔루션으로 이동하기 전에 잠시 멈추고 요구 사항에 대해 몇 가지 질문을해야합니다. 답변은 기술 솔루션에 큰 영향을 줄 수 있습니다. 이러한 질문의 예는 다음과 같습니다
.-모든 언어가 항상 사용됩니까?
-언제 어떤 언어 버전으로 열을 채울까요?
-사용자에게 텍스트의 특정 언어가 필요하고 시스템에없는 경우 어떻게됩니까?
-텍스트 만 현지화하거나 다른 항목도 있습니다 (예 : PRICE는 다를 수 있으므로 $와 €에 저장할 수 있음)


0 개 댓글

답장을 남겨주세요